Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Побудова оберненої матриці методом Гауса

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт про виконання розрахункової роботи
Предмет:
Алгоритмізація і програмування
Група:
КН-11

Частина тексту файла

Міністерство освіти і науки України Національний університет «Львівська Політехніка»  Звіт Про виконання розрахункової роботи з курсу «алгоритмізація та програмування» на тему: «Побудова оберненої матриці методом Гауса» Обернена матриця Як відомо, для кожного числа а≠0 існує обернене число, тобто таке число а-1, що а∙а-1 = а-1∙а = 1. Оскільки в множині квадратних матриць n-го порядку роль одиниці відіграє одинична матриця Е, то природно, за аналогією, прийняти таке означення: матриця А називається оберненою для квадратної матриці А, якщо А?=А?=Е. Легко зрозуміти, що не для кожної квадратної матриці існує обернена матриця. Питання про існування для даної матриці А оберненої матриці виявляється складним. Зважаючи на некомутативність множення матриць ми говоритимемо зараз про праву обернену матрицю, тобто про таку матрицю А-1, що добуток матриці А справа на цю матрицю дає одиничну матрицю AA-1 = E (1) Якщо матриця А вироджена, то, якби матриця А-1 існувала, то добуток, що стоїть в лівій частині рівності (1), був би виродженою матрицею, тоді як насправді матриця E , яка стоїть в правій частині цієї рівності, є невиродженою, оскільки її визначник рівний одиниці. Таким чином, вироджена матриця не може мати правої оберненої матриці. Такі ж міркування показують, що вона не має і ліву обернену матрицю і тому для виродженої матриці обернена матриця взагалі не існує. В даній програмі використовуємо метод Гауса. Відомо, що якщо, до матриці дописати справа одиничну матрицю, а потім з допомогою лінійних перетворень звести ліву матрицю до одиничної, проводячи ті ж перетворення над правою (одиничною) матрицею, то на її місці утвориться матриця, обернена до початкової. До лінійних перетворень належить додавання одного рядка, помноженного на довільний коефіцієнт, до другого. Розв'язок можна розбити на два етапи: «прямий» та «зворотний» хід. Є початкова матриця, приписуємо до неї одиничну: а[1,1], а[1,2], ..., а[1,n]; 1, 0, ..., 0; а[2,1], а[2,2], ..., а[2,n]; 0, 1, ..., 0; ... а[n,1], а[n,2], ..., а[n,n]; 0, 0, ..., 1; Під час «прямого» ходу необхідно добитися нулів під головною діагоналлю лівої матриці. Беремо перший рядок і ділимо його на a[1,1]. Тепер на місці a[1,1] стоїть 1. Віднімаємо від першого рядка перший, помножений на a[2,1] – на місці цього елемента утворюється нуль. Аналогічно для всіх рядків до n-го. Тепер в першому стовпчику матриці нижче одиниці, стоять нулі. Переходимо до другого рядка і для всіх рядків нижче другого повторюємо описану процедуру. Тепер нижче діагоналі і в другому рядку – нулі. Так продовжуємо до (n-1)-го рядка. Для n-го рядка достатньо поділити його на a[n,n]. Матриця А приведена до верхньої трикутної. На місці одиничної утворилася деяка матриця. Зауваження 1. Якщо на місці діагонального елемента лівої матриці утвориться число близьке до нуля, то ділення на маленьке число призведе до значної похибки в обрахунках. Тому, необхідно, щоб це число було «далеким» від нуля. З цією метою робиться наступний крок: перед тим, як поділити рядок на цей елемент, добавимо до рядка всі нижче лежачі рядки (помножені на -1, якщо в цьому рядку стоїть негативний елемент). Зворотний хід. Тут спочатку добиваємося нулів в останньому в стовпці матриці А. Для цього з кожного рядка (і) вище n-го віднімаємо n-ний рядок помножену на a[i,n]. Після цього добиваємося нулів в (n-1)-му стовпці і так далі до другого стовпця. Тепер зліва маємо одиничну матрицю, а справа, на місці одиничної – шукана обернена матриця. Для перевірки перемножуємо її на початкову – повинна вийти обернена матриця. program pz; uses crt; const eps=0.00001; { Всі номери менші eps еквівалентні 0 } type matr=array[1..10,1..10] of double; var a,b,a0:matr; i,j, np,n:integer; procedure PrintMatr(m,m1:matr;); var i,j:integer; begin for i:=1 to n do begin if (i=1) then write(np:2,':') else write(' '); for j:=1 to n do write(m[i,j]:6:1); for j:=1 to n do write(m1[i,j]:6:1); writeln; ...
Антиботан аватар за замовчуванням

22.11.2012 03:11

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини